home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / tbbs / prgsourc.zip / CD-MGR.ZIP / CD_MGR.PRG next >
Text File  |  1996-03-07  |  13KB  |  490 lines

  1. SET ESCAPE OFF
  2. SET FORMAT TO fscr NOCLEAR
  3. SET INTENSITY OFF
  4.  
  5. DO Screen
  6.  
  7. USE cdrom INDEX cdr
  8. COUNT TO end
  9. GOTO TOP
  10.  
  11. DECLARE cdrom[end]
  12.  
  13. cd = 1
  14. DO WHILE cd < end       
  15.    cdrom[cd] = title
  16.    cd = cd + 1
  17.    SKIP
  18. ENDDO
  19. cdrom[cd] = title
  20.  
  21. tPag = Ceiling(end/17)                   && Total pages
  22. cd = 1                                   && Current CD-ROM
  23. pag = 1                                  && Current page
  24. row = 3                                  && Current row
  25.  
  26. DO List 
  27.  
  28. SET COLOR TO GR+/B
  29. @ row,16 SAY cdrom[cd]
  30.  
  31. SET COLOR TO N/N
  32. kin = " "
  33. @ 2,0 GET kin
  34. DO WHILE .T.
  35.    READ                                          
  36.    DO CASE
  37.       CASE LastKey() = 3                         && <Page Down>
  38.            IF cd = end
  39.               LOOP
  40.            ENDIF
  41.            IF pag = tPag
  42.               SET COLOR TO W+/N
  43.               @ row,16 SAY cdrom[cd]
  44.               row = row + (end - cd)
  45.               cd = end
  46.            ELSE
  47.               IF (cd + 17) > end
  48.                  row = row - ((cd + 17) - end)
  49.                  cd = end
  50.               ELSE   
  51.                  cd = cd + 17
  52.               ENDIF
  53.               pag = pag + 1
  54.               DO List
  55.            ENDIF
  56.            
  57.       CASE LastKey() = 5                         && Up Arrow
  58.            IF cd = 1
  59.               LOOP
  60.            ENDIF
  61.            IF row = 3                           
  62.               cd = cd - 1
  63.               pag = pag - 1
  64.               DO List
  65.               row = 19
  66.            ELSE
  67.               SET COLOR TO W+/N
  68.               @ row,16 SAY cdrom[cd]
  69.               row = row - 1
  70.               cd = cd - 1
  71.            ENDIF
  72.            
  73.       CASE LastKey() = 13                          && <Enter>
  74.            SEEK cdrom[cd]
  75.            DO Edit WITH .F.
  76.            RELEASE cdrom
  77.            COUNT TO end
  78.            GOTO TOP
  79.            DECLARE cdrom[end]
  80.            cd = 1
  81.            DO WHILE cd < end       
  82.               cdrom[cd] = title
  83.               cd = cd + 1
  84.               SKIP
  85.            ENDDO
  86.            cdrom[cd] = title
  87.            tPag = Ceiling(end/17) 
  88.            cd = 1                            
  89.            pag = 1                           
  90.            row = 3                           
  91.            DO Screen
  92.            DO List
  93.  
  94.       CASE LastKey() = 18                        && <Page Up>
  95.            IF cd = 1
  96.               LOOP
  97.            ENDIF
  98.            IF pag = 1
  99.               SET COLOR TO W+/N
  100.               @ row,16 SAY cdrom[cd]
  101.               row = row - (cd - 1)
  102.               cd = 1
  103.            ELSE
  104.               cd = cd - 17
  105.               pag = pag - 1
  106.               DO List
  107.            ENDIF
  108.       
  109.       CASE LastKey() = 24                        && Down Arrow
  110.            IF cd = end
  111.               LOOP
  112.            ENDIF
  113.            IF row = 19
  114.               cd = cd + 1
  115.               pag = pag + 1
  116.               DO List
  117.               row = 3                   
  118.            ELSE
  119.               SET COLOR TO W+/N
  120.               @ row,16 SAY cdrom[cd]
  121.               row = row + 1
  122.               cd = cd + 1
  123.            ENDIF
  124.       
  125.       CASE LastKey() = 27                   && <Esc>
  126.            GOTO TOP
  127.            x = 1
  128.            t = 0
  129.            DO WHILE .T.
  130.               IF online
  131.                  t = t + 1
  132.               ENDIF
  133.               IF x = end
  134.                  EXIT
  135.               ENDIF
  136.               SKIP
  137.               x = x + 1
  138.            ENDDO
  139.            DO BoxW WITH 9,13,12,54,"s+"
  140.            IF t = 1
  141.               @ 10,15 SAY "You have " + LTrim(Str(t)) + " CD-ROM marked as On-line" 
  142.            ELSE
  143.               @ 10,15 SAY "You have " + LTrim(Str(t)) + " CD-ROMs marked as On-line"
  144.            ENDIF
  145.            @ 11,15 SAY "Is this correct?"
  146.            key = InKey(30)
  147.            IF key = 89 .OR. key = 121
  148.               DO BoxW WITH 7,12,16,54,"as+"
  149.               @ 8,23 SAY         "CD-ROM Manager s1.0"
  150.               @ 10,16 SAY "Copyright 1996, Darryl Kerkeslager"
  151.               @ 11,18 SAY   "LocalNet BBS, (804) 598-2817"
  152.               @ 13,19 SAY    "Please register - only $7"
  153.               key = InKey(40)
  154.               QUIT
  155.            ELSE
  156.               DO List
  157.            ENDIF
  158.  
  159.       CASE LastKey() = 65 .OR. LastKey() = 97    && A or a: Add
  160.            IF end = 100
  161.               DO BoxW WITH 8,23,14,55,"sa+"
  162.               @ 9,25 SAY  "For efficency, the program"
  163.               @ 10,25 SAY "is limited to 100 CD-ROMs. No"
  164.               @ 11,25 SAY "more CD-ROMs can be added."
  165.               key = InKey(40)
  166.               SET COLOR TO N/N
  167.               @ 8,23 CLEAR TO 15,56
  168.               DO List
  169.            ENDIF
  170.            
  171.            APPEND BLANK
  172.            REPLACE title WITH "Bogus CD-ROM, 1996, LocalNet BBS"
  173.            REPLACE path WITH "C:\CDROM\BOGUS\"
  174.            REPLACE farfile WITH "BOGUS"
  175.            REPLACE listfile WITH "BOGUS_CD.ZIP"
  176.            REPLACE odata WITH "/D/F/AS/Z2/Y"
  177.            
  178.            DO Edit WITH .T.
  179.            DO Screen
  180.            
  181.            RELEASE cdrom
  182.            COUNT TO end
  183.            GOTO TOP
  184.            DECLARE cdrom[end]
  185.            cd = 1
  186.            DO WHILE cd < end       
  187.               cdrom[cd] = title
  188.               cd = cd + 1
  189.               SKIP
  190.            ENDDO
  191.            cdrom[cd] = title
  192.            tPag = Ceiling(end/17) 
  193.            cd = 1                            
  194.            pag = 1                           
  195.            row = 3                           
  196.            
  197.            DO List 
  198.            
  199.       CASE LastKey() = 68 .OR. LastKey() = 100   && D or d: Delete
  200.            SEEK cdrom[cd]
  201.            DELETE
  202.            DO List 
  203.  
  204.       CASE LastKey() = 82 .OR. LastKey() = 114   && R or r: Recall
  205.            SEEK cdrom[cd]
  206.            RECALL
  207.            REPLACE acc WITH 0
  208.            REPLACE zip WITH 0
  209.            DO Edit WITH .F.
  210.            DO Screen
  211.            DO List 
  212.  
  213.    ENDCASE
  214.    SET COLOR TO GR+/B
  215.    @ row,16 SAY cdrom[cd]
  216. ENDDO
  217. RETURN
  218.  
  219. **************************************************
  220. PROCEDURE List
  221.  
  222. PRIVATE row
  223. row = 3
  224. n = Int((pag-1)*17) + 1         
  225.  
  226. SET COLOR TO N/N
  227. @ 2,0 CLEAR TO 20,79
  228.  
  229. DO WHILE row <= 19                             
  230.          SEEK cdrom[n]
  231.          
  232.          SET COLOR TO GR+/N                      
  233.          @ row,1 SAY "["                           
  234.          @ row,2 SAY n PICTURE "@Z 99"         
  235.          @ row,4 SAY "]"                           
  236.          IF online
  237.             SET COLOR TO G+/N
  238.             @ row,6 SAY "On-Line " 
  239.          ELSE 
  240.             SET COLOR TO R+/N
  241.             @ row,6 SAY date
  242.          ENDIF
  243.          SET COLOR TO W+/N                        
  244.          @ row,16 SAY title                       
  245.          SET COLOR TO GR+/N                        
  246.          IF Deleted()
  247.             @ row,58 SAY "<<<  DELETED  >>>"
  248.          ELSE
  249.             @ row,58 SAY acc PICTURE "@ 9999"                      
  250.             @ row,71 SAY zip PICTURE "@ 9999"                      
  251.          ENDIF
  252.          IF n = end
  253.             EXIT                                  
  254.          ENDIF
  255.          row = row + 1                            
  256.          n = n + 1
  257. ENDDO
  258. RETURN
  259.  
  260. **************************************************
  261. PROCEDURE Screen
  262.  
  263. SET COLOR TO N/N
  264. @ 0,0 CLEAR
  265. SET COLOR TO R/R
  266. @ 0,0 CLEAR TO 1,79
  267. @ 21,0 CLEAR TO 23,79
  268. SET COLOR TO GR+/R
  269. @ 0,3 SAY "CD-ROM Manager"
  270. @ 21,3 SAY  "Cursor keys"
  271. @ 21,51 SAY "A"
  272. @ 22,7 SAY  "<Enter>"
  273. @ 22,51 SAY "D"
  274. @ 23,9 SAY  "<Esc>"                                                                 
  275. @ 23,51 SAY "R"
  276. SET COLOR TO W+/R
  277. @ 0,57 SAY ".FAR         .ZIP"
  278. @ 1,6 SAY "On-line                   Title                    Entered     Downloads"  
  279. @ 21,15 SAY "= Move Highlite"
  280. @ 21,53 SAY "= Add new CD-ROM"
  281. @ 22,15 SAY "= Edit highlited CD-ROM entry"
  282. @ 22,53 SAY "= Delete CD-ROM"
  283. @ 23,15 SAY "= Quit"
  284. @ 23,53 SAY "= Recall/Undelete"
  285. RETURN
  286.  
  287.  
  288.  
  289. **************************************************
  290. PROCEDURE Edit
  291. PARAMETERS add
  292.  
  293. SET FORMAT TO fget NOCLEAR
  294. r = 1
  295. DO WHILE .T.
  296.    DO BoxW WITH 1,17,20,62,"s+"
  297.  
  298.    @ 2,30 SAY  "CD-ROM Entry/Edit"
  299.    @ 4,19 SAY  "Title (including year and company)"
  300.    @ 7,19 SAY  "Drive:\path\ to .FAR and .ZIP"
  301.    @ 10,19 SAY ".FAR file (no extension)"
  302.    @ 11,31 SAY "OptData"
  303.    @ 13,19 SAY "Listing file (add .ZIP extension)"
  304.    @ 16,19 SAY "Next Date On-line" 
  305.    @ 17,19 SAY "On-line ?"
  306.    @ 19,19 SAY "<Page Up>                       <ESC>"
  307.    SET COLOR TO W+/W
  308.    @ 5,19 SAY  "[                                        ]"
  309.    @ 8,19 SAY  "[                              ]"
  310.    @ 11,19 SAY "[        ]"
  311.    @ 11,39 SAY "[                    ]"
  312.    @ 14,19 SAY "[            ]"
  313.    @ 16,37 SAY "[        ]"
  314.    @ 17,29 SAY "[ ]" 
  315.    @ 19,29 SAY "Save and Exit"
  316.    @ 19,57 SAY "Exit"
  317.    
  318.    DO CASE
  319.       CASE r = 1
  320.            READ
  321.       CASE r = 2
  322.            READ SELECT farfile
  323.       CASE r = 3
  324.            READ SELECT listfile
  325.       CASE r = 4
  326.            READ SELECT odata
  327.    ENDCASE
  328.  
  329.    DO WHILE .T.
  330.       DO CASE
  331.          CASE LastKey() = 27   && <Esc>
  332.               IF add
  333.                  t = title
  334.                  REPLACE title WITH "TEMP"
  335.                  SEEK t
  336.                  IF Found()
  337.                     DO toErr WITH 53,"CD-ROM must have a unique name."
  338.                     SEEK "TEMP"
  339.                     REPLACE title WITH t
  340.                     r = 1
  341.                     ok = .F.
  342.                     EXIT
  343.                  ELSE
  344.                     SEEK "TEMP"
  345.                     REPLACE title WITH t
  346.                     DELETE
  347.                     SET FORMAT TO fscr NOCLEAR
  348.                     RETURN
  349.                  ENDIF
  350.               ENDIF
  351.               EXIT
  352.          CASE LastKey() = 18   && <Page Up>
  353.               EXIT
  354.          OTHERWISE
  355.               READ
  356.       ENDCASE
  357.    ENDDO
  358.  
  359.    t = title
  360.    REPLACE title WITH "TEMP"
  361.    SEEK t
  362.    IF Found()
  363.       DO toErr WITH 53,"CD-ROM must have a unique name."
  364.       SEEK "TEMP"
  365.       REPLACE title WITH t
  366.       r = 1
  367.       LOOP
  368.    ELSE
  369.       SEEK "TEMP"
  370.       REPLACE title WITH t
  371.    ENDIF
  372.    
  373.    IF rAt("\",RTrim(path)) # Len(RTrim(path))
  374.       REPLACE path WITH RTrim(path) + "\"
  375.    ENDIF
  376.    
  377.    IF "." $ farfile
  378.       DO toErr WITH 52,"Do not include .FAR extension."
  379.       r = 2
  380.       LOOP
  381.    ENDIF
  382.    
  383.    IF .NOT. ".ZIP" $ listfile
  384.       DO toErr WITH 57,"List file must have .ZIP extension."
  385.       r = 3
  386.       LOOP
  387.    ENDIF
  388.    
  389.    IF "\" $ odata
  390.      DO toErr WITH 54,"Opt Data format incorrect: use /"
  391.      r = 4
  392.      LOOP
  393.    ENDIF
  394.  
  395.    IF "/U" $ odata
  396.      DO toErr WITH 60,"Cannot upload to CD-ROM: cannot use /U"
  397.      r = 4
  398.      LOOP
  399.    ENDIF
  400.    
  401.    IF .NOT. File(RTrim(path) + RTrim(farfile) + ".FAR")
  402.       DO toErr WITH 42,".FAR file not found."
  403.       r = 2
  404.       LOOP
  405.    ENDIF
  406.  
  407.    IF .NOT. File(RTrim(path) + RTrim(listfile))
  408.       DO toErr WITH 42,"List file not found."
  409.       r = 3
  410.       LOOP
  411.    ENDIF
  412.  
  413.    EXIT
  414. ENDDO
  415. SET FORMAT TO fscr NOCLEAR
  416. RETURN
  417.  
  418. **************************************************
  419. PROCEDURE BoxW
  420. PARAMETERS x,y,n,c,s
  421.  
  422. SET COLOR TO W/W
  423. @ x,y CLEAR TO n,c
  424. IF "s" $ s
  425.   SET COLOR TO N/N
  426.   @ n+1,y+1 CLEAR TO n+1,c
  427.   @ x+1,c+1 CLEAR TO n+1,c+1
  428. ENDIF
  429. SET COLOR TO N/W
  430. IF "+" $ s
  431.   SET COLOR TO W+/W
  432. ENDIF
  433. @ x,y SAY "┌"
  434. @ x,y+1 TO x,c
  435. @ x,c SAY "┐"
  436. @ x+1,y TO n,y
  437. @ n,y SAY "└"
  438. IF "a" $ s
  439.   SET COLOR TO W+/W
  440.   @ n-1,Ceiling((c-y-11)/2)+y SAY "< ANY KEY >"
  441. ENDIF                           
  442. SET COLOR TO N/W
  443. @ x+1,c TO n,c              
  444. @ n,y+1 TO n,c               
  445. @ n,c SAY "┘"                
  446. RETURN
  447.  
  448.  
  449. **************************************************
  450. PROCEDURE BoxB
  451. PARAMETERS x,y,n,c,s
  452.  
  453. SET COLOR TO B/B
  454. @ x,y CLEAR TO n,c
  455. IF "s" $ s
  456.   SET COLOR TO N/N
  457.   @ n+1,y+1 CLEAR TO n+1,c
  458.   @ x+1,c+1 CLEAR TO n+1,c+1
  459. ENDIF
  460. SET COLOR TO N/B
  461. IF "+" $ s
  462.   SET COLOR TO W+/B
  463. ENDIF
  464. @ x,y SAY "┌"
  465. @ x,y+1 TO x,c
  466. @ x,c SAY "┐"
  467. @ x+1,y TO n,y
  468. @ n,y SAY "└"
  469. IF "a" $ s
  470.   SET COLOR TO W+/B
  471.   @ n-1,Ceiling((c-y-11)/2)+y SAY "< ANY KEY >"
  472. ENDIF                           
  473. SET COLOR TO N/B
  474. @ x+1,c TO n,c              
  475. @ n,y+1 TO n,c               
  476. @ n,c SAY "┘"                
  477. SET COLOR TO W+/B
  478. RETURN
  479.  
  480. ************************************************** 
  481. PROCEDURE toErr
  482. PARAMETERS z,c
  483.  
  484. DO BoxB WITH 10,19,13,z,"sa+"
  485. @ 11,21 SAY c
  486. key = InKey(40)
  487.  
  488. RETURN
  489.  
  490.